/**
 * 项目名称:显示界面
 *
 * @Author: 夏国倩
 * @Date: 2023/10/17 10:20
 * @Copyright
 */
package itSystemCase6.view;
import JDBC.DBUtil;
import com.mysql.cj.jdbc.SuspendableXAConnection;
import itSystemCase6.domain.ZhangWuBean;
import itSystemCase6.service.ZhangWuService;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;
import java.util.Scanner;
public class MainView {
    //本项目View 依赖Service
    private ZhangWuService zhangWuService=new ZhangWuService();
    //编写run方法
    //1.1完成功能界面的菜单显示
    //1.2接收键盘输入的功能选项
    //1.3根据选项值，调用对应的功能方法

    /**
    运行方法
     */
    public void run(){
        /*
        打印菜单，获取用户输入，调用对应方法
         */
        Scanner in=new Scanner(System.in);
        boolean flag=true;
        while (flag){
            System.out.println("--------------管家婆家庭记账软件---------------");
            System.out.println("1.添加账务  2.编辑账务  3.删除账务  4.查询账务  5.退出系统");
            System.out.print("请输入要操作的功能序号[1~5]：");
            int op= in.nextInt();
            switch (op){
                case 1:
                    //添加账务
                    addZhangWu();
                    break;
                case 2:
                    editZhangWu();
                    //编辑账务
                    break;
                case 3:
                    //删除账务
                    deleteZhangWu();
                    break;
                case 4:
                    //查询账务
                    selectZhangWu();
                    break;
                case 5:
                    //退出系统
                    System.out.println("再见！");
                    flag=false;
                    break;
                default:
                    //当输入其他数字，提示输入错误
                    System.out.println("输入错误！");
            }
        }
    }

    /**
     * 删除账务
     */
    private void deleteZhangWu() {
        //1.键盘输入要删除的账务信息ID号
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入要删除的ID号：");
        int id=sc.nextInt();
        //2.调用ZhangWuService类中的deleteZhangWu()方法，完成删除功能
        zhangWuService.deleteZhangWu(id);
        System.out.println("删除账务成功");
    }

    /**
     * 编辑账务
     */
    private void editZhangWu(){
        //1.键盘输入要编辑的账务信息 ID号
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入要编辑的账务信息ID号：");
        int id=sc.nextInt();
        //2.键盘输入要修改的账务信息内容
        System.out.print("请输入要编辑的账务信息内容:(1.类别 2.账户 3.金额 4.时间 5.说明)  ");
        int hh=sc.nextInt();
        //3.调用ZhangWuService类中的editZhangWu方法，用来指定的账务信息进行更新
        zhangWuService.editZhangWu(id,hh);
        //4.更新完毕后，使用输出语句，提示“编辑账务成功！”
        System.out.println("编辑账务成功！");
    }

    /**
     * 添加账务
     */
    private void addZhangWu() {
        /*
        1.获取用户输入，封装到bean中
        2.调用service的addZhangWu()方法完成添加功能
         */
        Scanner in=new Scanner(System.in);
        ZhangWuBean zw=new ZhangWuBean();
        System.out.print("请输入类别：");
        zw.setFlname(in.next());
        System.out.print("请输入账户：");
        zw.setZhangHu(in.next());
        System.out.print("请输入金额：");
        zw.setMoney(in.nextDouble());
        System.out.print("请输入时间：");
        zw.setCreatetime(in.next());
        System.out.print("请输入说明：");
        zw.setDescription(in.next());

        zhangWuService.addZhangWu(zw);
        System.out.println("添加账务成功！");
    }

    /**
     * 查询账务方法
     */
    public void selectZhangWu() {
        /*
        通过输出语句，显示出要查询账务的方式
        接受键盘的输入项，调用对应的方法（1.查询所有selectAll 2.按条件查询select）
         */
        System.out.print("1.查询所有        2.按条件查询   ");
        Scanner in=new Scanner(System.in);
        int op=in.nextInt();
        switch (op){
            case 1:
                selectAll();
                break;
            case 2:
                select();
                break;
            default:
                System.out.println("输入错误！");
        }
    }

    /**
     * 按条件查询账务方法
     */
    public void select() {
        /*
        1.获取用户输入的查询日期范围
        2.调用Service的select()方法完成查询条件功能
         */
        //1.获取查询的开始日期
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入要查询的开始日期：");
        String  startTime= sc.next();
        //2.获取查询的结束日期
        System.out.print("请输入要查询的结束日期：");
        String endTime=sc.next();
        //3.调用Service的select(起始日期，结束日期)
        List<ZhangWuBean> zhangWuList=ZhangWuService.select(startTime,endTime);
        //打印 print()
        print(zhangWuList);
    }

    /**
     * 查询所有账务方法
     */
    public void selectAll() {
        List<ZhangWuBean> zhangWuList = ZhangWuService.selectAll();
        //打印print
        print(zhangWuList);
    }

    /**
     * 输出账务方法
     */
    private void print(List<ZhangWuBean> zhangWuList){
        System.out.println("ID\t类别\t\t账户\t\t\t金额\t\t\t时间\t\t\t说明");
        for (ZhangWuBean zw:zhangWuList){
            System.out.println(zw.getZwid()+"\t"+zw.getFlname()+"\t"+zw.getZhangHu()+"   \t\t"+
                    zw.getMoney()+"\t"+zw.getCreatetime()+"\t\t"+zw.getDescription());
        }
    }
}
